package br.com.ff.manager.managebean;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import br.com.ff.common.exception.EntidadeDuplicadaException;
import br.com.ff.manager.managebean.base.BaseManagedBean;
import br.com.ff.versao.session.VersaoLocal;
import br.com.ff.versao.to.VersaoTO;

public class CrudVersao extends BaseManagedBean {
	
	@EJB
	private VersaoLocal versaoLocal;
	
	private VersaoTO versaoTO = new VersaoTO();
	
	private List<VersaoTO> versoes = new ArrayList<VersaoTO>();
		
	public String goIncluir() throws IOException {
		versaoTO = new VersaoTO();
		return "go_salvar";
	}
	
	public String consultar() throws IOException {
		this.versoes = getVersaoLocal().findAll();
		
		return "success";
	}
	
	public void goEditar(ActionEvent event) throws IOException {
		UIParameter component = (UIParameter) event.getComponent().findComponent("id");
		Long id = (Long)component.getValue();
		
		versaoTO = versaoLocal.findById(id);
		
		redirecionarPara("salvarVersao.xhtml");
	}

	public String salvar() throws IOException {
		
		String versao = getVersaoTO().getVersao();
		String descricao = getVersaoTO().getVersao();
		
		if (versao == null || versao.equals("")) {
			FacesContext.getCurrentInstance().addMessage("", new FacesMessage("Versao e obrigatorio"));
		}
		
		if (descricao == null || descricao.equals("")) {
			FacesContext.getCurrentInstance().addMessage("", new FacesMessage("Versao e obrigatorio"));
		}
		
		if (FacesContext.getCurrentInstance().getMessages().hasNext()) {
			return "";
		}
		
		try {
			if (getVersaoTO().getId() != null) {
				getVersaoLocal().atualizar(getVersaoTO());
			} else {
				getVersaoLocal().salvar(getVersaoTO());
			}
		} catch (EntidadeDuplicadaException e) {
			FacesContext.getCurrentInstance().addMessage("", new FacesMessage(e.getMessage()));
			return "";
		}
		
		redirecionarPara("msgSucesso.xhtml?url=consultarVersao.xhtml");
		
		return "success";
	}
	
	public void remover(ActionEvent event) throws IOException {
		
		UIParameter component = (UIParameter) event.getComponent().findComponent("id");
		Long id = (Long)component.getValue();
		versaoLocal.remover(id);
		
		redirecionarPara("msgSucesso.xhtml?url=consultarVersao.xhtml");
		
	}
	
	public VersaoLocal getVersaoLocal() {
		return versaoLocal;
	}

	public void setVersaoLocal(VersaoLocal versaoLocal) {
		this.versaoLocal = versaoLocal;
	}

	public VersaoTO getVersaoTO() {
		return versaoTO;
	}

	public void setVersaoTO(VersaoTO versaoTO) {
		this.versaoTO = versaoTO;
	}

	public List<VersaoTO> getVersoes() {
		return versoes;
	}

	public void setVersoes(List<VersaoTO> versoes) {
		this.versoes = versoes;
	}
	
}
